Motion.SetAxisCamSwitch 方法

使用軸位置來控制觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。

命名空間IntervalZero.KINGSTAR.Local.Api

組合: IntervalZero.KINGSTAR.Local.Api (於 IntervalZero.KINGSTAR.Local.dll) 版本:4.4.0.0

語法

C#VB
public KsCommandStatus SetAxisCamSwitch(
       int Index,
       McCamSwitch[] Switches,
       McOutput[] Outputs,
       McTrack[] Tracks,
       uint EnableMask,
       McSource ValueSource
)
Public Function SetAxisCamSwitch(
       Index As Integer,
       Switches As McCamSwitch(),
       Outputs As McOutput(),
       Tracks As McTrack(),
       EnableMask As UInteger,
       ValueSource As McSource
) As KsCommandStatus

參數

Index [in]

型別:int

軸索引。索引以 0 為起始;別名將影響此參數。

 

Switches [in]

型別:McCamSwitch[]

控制切換動作。軌道編號需要按順序排列。

 

Outputs [in]

型別:McOutput[]

選擇對應軌道所控制的數位輸出。

 

Tracks [in]

型別:McTrack[]

在軌道的開關上增加補償時間和遲滯。TrackNumber 定義在 Switches 中。

 

EnableMask [in]

型別:uint

啟用不同軌道。此參數為 bool(32 位元),當 bool 值設為 1 時將啟用軌道陣列中相應的軌道。

 

ValueSource [in]

型別:McSource

定義軸值的來源;例如:位置;參見 McSource

回傳值

型別:KsCommandStatus

回傳 KsCommandStatus 類別。

備註

McCamSwitch 類別中的元素

B/E 參數 型別 說明
B TrackNumber INT 軌道索引,索引以零為起始。
B FirstOnPosition [使用者單位] LREAL 開關開啟的位置。
B LastOnPosition [使用者單位] LREAL 開關關閉的位置。
E AxisDirection INT

軸方向,預設值為零。若選擇一或二,開關僅在當軸朝指定方向移動時才會啟動。

雙向:0;正向:1;負向:2。

E CamSwitchMode INT

凸輪開關由軸的位置或時間控制,預設值為零。若選擇位置,需進一步設定 FirstOnPositionLastOnPosition;若選擇時間,需進一步設定 FirstOnPositionDuration

位置:0;時間:1。

E Duration TIME 開關開啟的時長,此功能在 CamSwitchMode 選擇為時間時可用,單位:秒。

 

McTrack 類別中的元素

B/E 參數 型別 說明
E OnCompensation TIME 在每個軌道的切換點前或後開啟開關(上升邊緣)的補償時間。若值為正,則開啟將延遲;若值為負,則將提前開啟。
E OffCompensation TIME 在每個軌道的切換點前或後關閉開關(下降邊緣)的補償時間。若值為正,則關閉將延遲;若值為負,則將提前關閉。
E Hysteresis [單位] LREAL 在軸離開該區域之前,從開關未打開或未關閉的切換點(正向和負向)的距離。此可避免在開關點附近頻繁切換。

 

此凸輪定義具有起點與終點,如此使用者可定義每一個凸輪的 FirstOnPositionLastOnPosition(或時間),此函式類似機械凸輪,但具有額外的優點,您可為輸出設置一個特定時間,並設定時間補償和遲滯。

CamSwitchMode:可為位置或時間。

Duration:時長,凸輪開啟的輸出時長,時間補償 (OnCompensationOffCompensation) 可為正或負值,負值表示輸出在開關位置到達前即變更。

Hysteresis:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。HysteresisMcTrack 的一部分,表示每個軌道都可設定不同的遲滯。

 

McCamSwitch 之範例

參數 型別 開關 01 開關 02 開關 03 開關 04 ... 開關 N
TrackNumber INTEGER 1 1 1 2    
FirstOnPosition [單位] LREAL 2000 2500 4000 3000    
LastOnPosition [單位] LREAL 3000 3000 6000 --    
AxisDirection INTEGER 1=正向 2=負向 0=雙向 0=雙向    
CamSwitchMode INTEGER 0=位置 0=位置 0=位置 1=時間    
Duration LREAL -- -- -- 1.35 秒    

 

McOutput 之範例

參數 MC_OUTPUT[0] MC_OUTPUT[1] MC_OUTPUT[2] - - - MC_OUTPUT[31]
IsAxis FALSE FALSE FALSE - - - FALSE
Index 0 0 0 - - - 0
BitOffset 0 1 2 - - - 31

 

I/O 模組之範例

 

下圖使用了上例 McCamSwitch 的值,不使用 On/OffCompensationHysteresis,此為當軸持續朝正向移動時的輸出行為。

 

SetAxisCamSwitch – 正向

 

正向:輸出行為

TrackNumber 1(開關 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(開關 04)匹配到 McOutput[2]。當開關 01開關 02開關 03 被觸發時,第一個 I/O 模組(索引 0)上的第二個輸出(輸出 1)即被開啟。當開關 04 被觸發時,第三個輸出(輸出 2)即被開啟。

 

On/Off 補償之範例

以下範例使用 OnCompensation -125ms 與 OffCompensation +250ms。

 

下圖為當軸持續朝負向移動,且不使用 On/OffCompensation 與 Hysteresis 時的輸出行為。

 

SetAxisCamSwitch – 負向

 

負向:輸出行為

 

EnableMask

EnableMask 是一個含有 32 位元的 uint32 參數,每個位元都是一個 bool 值,可控制輸出。輸出可透過將相應的位元設為 TRUE 或 FALSE 來啟用或停用,例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都設為 TRUE,其輸出即被啟用,意即當相對應的開關被觸發時,其輸出即被開啟。若位元 0 和位元 1 都設為 FALSE,其輸出即被停用,即使相對應的開關被觸發時,其輸出也不會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE/FALSE TRUE/FALSE TRUE/FALSE TRUE/FALSE - - - - TRUE/FALSE

 

McOutput 之範例

參數 MC_OUTPUT[0] MC_OUTPUT[1] MC_OUTPUT[2] - - - MC_OUTPUT[31]
IsAxis FALSE FALSE FALSE - - - FALSE
Index 0 0 0 - - - 0
BitOffset 0 1 2 - - - 31

 

EnableMask 位元之範例 1

位元 0、1、2 為 TRUE,意即輸出 0、1、2 被啟用,當相對應的開關被觸發時,輸出即被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為

 

EnableMask 位元之範例 2

位元 0、2 為 TRUE,意即輸出 0、2 被啟用,當相對應的開關被觸發時,僅有這 2 個輸出會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為

 

EnableMask 位元之範例 3

所有位元均為 FALSE,意即所有輸出均停用,即使相對應的開關被觸發時,輸出也不會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31

FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為

範例

C#
N/A

參見

Motion 類別

IntervalZero.KINGSTAR.Local.Api 命名空間